<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
//新建博客
//初始组【初始界面】
Route::group(['middleware'=>['web']],function(){
   Route::get('/',function(){
        return view('welcome');

    });
    //密码加密【测试】
   // Route::any('/admin/crypt','Admin\LoginController@crypt');

    Route::any('/admin/login','Admin\LoginController@login');
    //定义code路由
    Route::get('admin/code','Admin\LoginController@code');

    //仅做测试，获取验证码
   // Route::get('admin/getcode','Admin\LoginController@getcode');



});

//登录组【后台界面】
Route::group(['middleware'=>['web','admin.login'],'prefix'=>'admin','namespace'=>'Admin'],function(){
   //异步修改排序
    Route::post('cate/changeorder','CategoryController@changeOrder');

    //修改密码
    Route::any('pass','IndexController@pass');
    //欢迎页面
    Route::get('info','IndexController@info');
    //登录后的页面
    Route::get('index','IndexController@index');
    //注销操作
    Route::get('logout','LoginController@logout');

    //后台文章列表的增删查改 【使用资源路由】
    Route::resource('category','CategoryController');

    //文章路由
    Route::resource('article','ArticleController');
});



//中间件：
//- 直接是可以显示的【在web中】。不需要加中间件群组，
// 多个的话就需要

//
//Route::group(['middleware'=>['web','admin.login']],function(){
//    //将路由放入
//    //先访问首页，写入key
//    Route::get('/',function(){
//        session(['keya'=>456]);
//        return view('welcome');
//    });
//
////提取key
//    Route::get('/test',function (){
//        echo session('keya');
//        return 'test';
//    });
//});





//资源路由 :可以检测文件存不存在
//Route::resource('admin','Admin\AdminController');


//测试自写路由admin
//Route::get('/admin/index','Admin\AdminController@index');

//命名路由
//Route::prefix('admin')->group(function () {
//    Route::get('users', function () {
//        // Matches The "/admin/users" URL
//    });
//});


Route::get('user/{id}/profile', function ($id) {
    $url = route('profile', ['id' => $id]);  //定义路由名为profile，并传递参数$id
    return $url;        //返回 Url 地址
})->name('profile');  //好像重写了下面那条路由


//还可以为控制器动作指定路由名称：
Route::get('user/profile', 'UserController@showProfile')->name('profile');
//这样我们就可以通过以下方式定义重定向：
Route::get('redirect', function() {
    //为命名路由生成 URL
    $url = route('profile');        //名字为profile的路由，赋值给$url
    // 通过路由名称进行重定向
    return redirect($url);
});



//Route::get('user/profile', function () {
//    // 通过路由名称生成 URL
//    return 'my url: ' . route('profile');
//})->name('profile');


//参数约束 【正则限制】
//全局约束
//如果想要路由参数在全局范围内被给定正则表达式约束，可以使用 pattern 方法。需要在 RouteServiceProvider 类的 boot 方法中定义这种约束模式：

//加了之后会验证正则：不符合会报错或者不存在
//例如：只允许输入数字id
Route::get('/adminid/{id}',function($id){
   return 'admin'.$id;
})->where('id','[0-9]+');

//路由参数分隔符不能用“-”，用“_” 替代
//可选参数：function中要传一个null 或默认值 0
// 多个参数的话。一般最后一个值设为可选。其他都为必选
Route::get('user/{conId}/let/{id?}',function($conId=0,$id=null){
    return $conId.' user '.$id;
});

//必选参数
Route::get('user/{id}',function($id){
    return 'user '.$id;
});




//以get 和post方式请求 匹配请求方法的路由
//Route::match(['get','post'],'test',function(){
//    echo 'match';
//});


//Route::get('/', function () {
//    return view('welcome');
//});
